EMS resolution of split-brain virtual network function components

ABSTRACT

An example operation may include a system, comprising one or more of receiving a virtual network function component instance (VNFCI) status notification resumption message with an active state when a peer VNFCI operational state is active, retrieving a timestamp of a VNFCI state change to an active state from an element VNFCI state database, retrieving a timestamp of a peer VNFCI state change to active from an element VNFCI state database, sending one or more of: a request to a virtual network function manager (VNFM) to determine if the VNFCI network is isolating while an operating state was active, and a request to the VNFM to determine if the peer VNFCI network is isolating while an operating state was active, sending a state change request with standby state to the peer VNFCI when the VNFCI is not network isolated and the peer VNFCI is network isolated, and a VNFM response is received regarding the VNFCI, a timeout response from the VNFM, and a VNFM response is received regarding the peer VNFCI, and sending a state change request with standby to the VNFCI with one or more of: the VNFCI network isolate and peer VNFCI is not network isolated, and the VNFCI is network isolated or the peer VNFCI is not network isolated, and the VNFCI is not network isolated and the peer VNFCI is network isolated and the VNFCI is in preferred standby.

TECHNICAL FIELD

This application generally relates to fault tolerance of Virtual Network Function Components (VNFCs). More specifically, the application relates to methods, systems, components and computer readable media for detecting and handling faults in VNFCs utilizing Active/Standby fault tolerance in a system employing a Network Function Virtualization (NFV) architecture.

BACKGROUND

The NFV architecture offers a way to design and deploy telecommunication network functions. In the past, these functions have been tightly coupled to the proprietary hardware on which they execute. NFV decouples the software implementation of these functions from the underlying infrastructure. The software typically runs in virtual machines or containers, under the control of a hypervisor or operating system which run on commercial off-the-shelf (COTS) servers. This approach has the promise of significant reductions in capital and operational expenses for service providers as custom hardware is no longer required and scaling is provided through additional software deployments, not a provisioning of new physical equipment.

The European Telecommunications Standard Institute (ETSI) network functions virtualization (NFV) industry specification group (ISG) has defined a reference NFV architecture. However, the details of many important aspects of the functionality are not described or specified.

SUMMARY

In an NFV architected system, functions that were tied to specialized hardware in the past are decoupled so that their software implementations can be executed in virtualized containers running on COTS hardware. These decoupled software implementations are called Virtual Network Functions (VNFs). Each of these functions is made up of one or more software components which are known as VNF Components (VNFCs). The details of how faults are detected in VNFCs is not described or specified in current specifications. As a large percentage of existing telecommunication functions being ported to NFV rely on Active/Standby fault tolerance, there exists a need for detection of faults in VNFCs utilizing Active/Standby fault tolerance in an NFV system.

One example embodiment may include a system, comprising one or more of receiving a VNFCI status notification resumption message with an active state when a peer VNFCI operational state is active, retrieving a timestamp of a VNFCI state change to an active state from an element VNFCI state database, retrieving a timestamp of a peer VNFCI state change to active from an element VNFCI state database, sending one or more of: a request to a VNFM to determine if the VNFCI network is isolating while an operating state was active, and a request to the VNFM to determine if the peer VNFCI network is isolating while an operating state was active, sending a state change request with standby state to the peer VNFCI when the VNFCI is not network isolated and the peer VNFCI is network isolated, and a VNFM response is received regarding the VNFCI, a timeout response from the VNFM, and a VNFM response is received regarding the peer VNFCI, and sending a state change request with standby to the VNFCI with one or more of: the VNFCI network isolate and peer VNFCI is not network isolated, and the VNFCI is network isolated or the peer VNFCI is not network isolated, and the VNFCI is not network isolated and the peer VNFCI is network isolated and the VNFCI is in preferred standby.

Another example embodiment may provide a method, comprising one or more of receiving a VNFCI status notification resumption message with an active state when a peer VNFCI operational state is active, retrieving a timestamp of a VNFCI state change to an active state from an element VNFCI state database, retrieving a timestamp of a peer VNFCI state change to active from an element VNFCI state database, sending one or more of: a request to a VNFM to determine if the VNFCI network is isolating while an operating state was active, and a request to the VNFM to determine if the peer VNFCI network is isolating while an operating state was active, sending a state change request with standby state to the peer VNFCI when the VNFCI is not network isolated and the peer VNFCI is network isolated, and a VNFM response is received regarding the VNFCI, a timeout response from the VNFM, and a VNFM response is received regarding the peer VNFCI, and sending a state change request with standby to the VNFCI with one or more of: the VNFCI network isolate and peer VNFCI is not network isolated, and the VNFCI is network isolated or the peer VNFCI is not network isolated, and the VNFCI is not network isolated and the peer VNFCI is network isolated and the VNFCI is in preferred standby.

Another example embodiment may provide a non-transitory computer readable medium comprising instructions, that when read by a processor, cause the processor to perform one or more of: receiving a VNFCI status notification resumption message with an active state when a peer VNFCI operational state is active, retrieving a timestamp of a VNFCI state change to an active state from an element VNFCI state database, retrieving a timestamp of a peer VNFCI state change to active from an element VNFCI state database, sending one or more of: a request to a VNFM to determine if the VNFCI network is isolating while an operating state was active, and a request to the VNFM to determine if the peer VNFCI network is isolating while an operating state was active, sending a state change request with standby state to the peer VNFCI when the VNFCI is not network isolated and the peer VNFCI is network isolated, and a VNFM response is received regarding the VNFCI, a timeout response from the VNFM, and a VNFM response is received regarding the peer VNFCI, and sending a state change request with standby to the VNFCI with one or more of: the VNFCI network isolate and peer VNFCI is not network isolated, and the VNFCI is network isolated or the peer VNFCI is not network isolated, and the VNFCI is not network isolated and the peer VNFCI is network isolated and the VNFCI is in preferred standby.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of an embodiment of a network function virtualization framework in accordance with one or more embodiments.

FIG. 2 is a diagram of an embodiment of a VNF system hosting a VNFC using Active/Standby fault tolerance in accordance with one or more embodiments.

FIG. 3 is a diagram of an embodiment of a management Focus version of FIG. 2 in accordance with one or more embodiments.

FIG. 4 is a diagram of an embodiment of a signaling focus version of FIG. 2 in accordance with one or more embodiments.

FIG. 5 is a diagram of an embodiment of a standard hardware diagram in accordance with one or more embodiments.

FIG. 6 is a diagram of an embodiment of a VNFCI administrative state diagram in accordance with one or more embodiments.

FIG. 7 is a diagram of an embodiment of a VNFCI operational state diagram in accordance with one or more embodiments.

FIG. 8 is a diagram of an embodiment of a VNFC Status Request message structure diagram in accordance with one or more embodiments.

FIG. 9 is a diagram of an embodiment of a VNFC Status Notification message structure diagram in accordance with one or more embodiments.

FIG. 10 is a diagram of an embodiment of an EMS controlled VNFC fault detection flow chart in accordance with one or more embodiments.

FIG. 11 is a diagram of an embodiment of an EMS controlled VNFC fault handling flow chart in accordance with one or more embodiments.

FIG. 12 is a diagram of an embodiment of an EMS controlled VNFC split brain resolution flow chart in accordance with one or more embodiments.

DETAILED DESCRIPTION

It will be readily understood that the instant components and/or steps, as generally described and illustrated in the figures herein, may be arranged and designed in a wide variety of different configurations. Thus, the following detailed description of the embodiments of at least one of a method, system, component and non-transitory computer readable medium, as represented in the attached figures, is not intended to limit the scope of the application as claimed, but is merely representative of selected embodiments.

The instant features, structures, or characteristics as described throughout this specification may be combined in any suitable manner in one or more embodiments. For example, the usage of the phrases “example embodiments”, “some embodiments”, or other similar language, throughout this specification refers to the fact that a particular feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment. Thus, appearances of the phrases “example embodiments”, “in some embodiments”, “in other embodiments”, or other similar language, throughout this specification do not necessarily all refer to the same group of embodiments, and the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.

In addition, while the term “message” may have been used in the description of embodiments, the application may be applied to many types of network data, such as, packet, frame, datagram, etc. The term “message” also includes packet, frame, datagram, and any equivalents thereof. Furthermore, while certain types of messages and signaling may be depicted in exemplary embodiments they are not limited to a certain type of message, and the application is not limited to a certain type of signaling.

Disclosed herein are various embodiments for implementing and/or utilizing Active/Standby fault tolerance in VNFs. A VNF is the implementation of a network function that can be deployed in an NFV architecture. VNFs can be viewed as service building blocks which may be used by one or more Network Services (NSs). Examples of VNFs include, but are not limited to, firewall, application acceleration, Deep Packet Inspection (DPI), Session Initiation Protocol (SIP) user agent, and Network Address Translation (NAT).

Each VNF specifies its deployment and operational behavior in a deployment template known as a VNF Descriptor. A VNF may be implemented using one or more VNF Components (VNFCs). A VNFC is an internal component of a VNF that provides a subset of that VNF's functionality. The main characteristic of a VNFC is that it maps 1:1 with a Virtual Machine (VM) or operating system container when the function is deployed. Please note the terms VNF and VNFC may be used interchangeably herein.

A VNF instance (VNFI) is a run-time instantiation of the VNF software resulting from completing the instantiation of its VNFCs and the connectivity between them. As multiple instances of a VNF can exist in the same domain, the terms VNF and VNF Instance (VNFI) may be used interchangeably herein. Similarly, VNFC instance (VNFCI) is a run-time instantiation of a VNFC deployed in a particular VM or container. It has a lifecycle dependency with its parent VNFI. As multiple instances of a VNFC can exist in the same domain, the terms VNFC and VNFC Instance (VNFCI) may also be used interchangeably herein.

FIG. 1 is a diagram of a network function virtualization framework 100 for implementing NFV in accordance with one or more embodiments of the present application. The NFV framework 100 comprises an operating support system (OSS)/business support system (BSS) module 102, a VNF module 104, a network function virtualization infrastructure (NFVI) model 106, and an NFV management and orchestration (MANO) module 108. A module may be a virtual element, a physical network element or embedded in a physical network element and may consist of hardware, software, firmware and/or a combination of one or more of hardware, software, and firmware. The OSS/BSS module 102 is configured to support management functions such as network inventory, service provisioning, networking configurations, and fault management. Further, the OSS/BSS module 102 is configured to support end-to-end telecommunication services. The OSS/BSS module 102 is configured to interact with the VNF module 104, the NFVI module 106 and the NFV MANO module 108. The VNF module 104 may comprise element management systems (EMSs) 112, VNFs 114 and VNFCs 116. The EMSs 112 may be applicable to specific VNFs and are configured to manage one or more VNFs 114 which may be composed of one or more VNFCs 116.

In one embodiment, the VNF module 104 may correspond with a network node in a system and may be free from hardware dependency. The NFVI module 106 is configured to provide virtual compute, storage and network resources to support the execution of the VNFs. The NFVI module 106 may comprise COTS hardware, accelerator components where necessary and/or a software layer which virtualizes and abstracts underlying hardware. For example, the NFVI module 106 may comprise one or more of a virtual compute module 120, a virtual storage module 122, a virtual networking module 124 and a virtualization layer 118. The virtualization layer 118 may be operably coupled to hardware resources 126 including, but not limited to compute hardware 128, storage hardware 130 and network hardware 132. The NFV MANO module 108 is configured to orchestrate and to manage physical and/or software resources that support the infrastructure virtualization. The NFV MANO module 108 is configured to implement virtualization specific management tasks for the NFV framework 100. The NFV MANO module 108 may be driven by a set of metadata 110 that describes services, VNFs, VNFCs, and infrastructure requirements. The metadata 110 is owned by and stored in the OSS/BSS 102, but is used to interwork with the MANO module 108.

In one embodiment, the NFV MANO module comprises an orchestrator module 134, a VNF manager (VNFM) 136, and a virtualized infrastructure manager (VIM) 138. The orchestrator module 134, the VNFM 136 and the VIM 138 are configured to interact with each other. Further, the VNFM 136 may be configured to interact with and to manage the VNF module 104 and the VIM 138 may be configured to interact with and manage the NFVI module 106. The orchestrator module 134 is responsible for the lifecycle management of network services. Supported lifecycle operations include one or more of instantiating, scaling, updating and terminating network services. The VNFM 136 is responsible for the lifecycle management for a set of VNFs 114 and all of their components (VNFCs) 116. Supported lifecycle operations include one or more of instantiating, scaling, updating and terminating VNFs. A VNFM may manage one or more types of VNFs 114. The VIM 138 is responsible for controlling and managing NFVI 106 compute, storage and network resources usually within an operator's infrastructure domain. Additionally, VIMs 138 may be partitioned based on an operator's Points of Presence (PoPs), i.e. physical locations. The service catalog 140, stores the network services which are managed by the orchestrator module 134. Each stored service may include, but is not limited to, metadata associated with the service 110 and service specific software bundles. The VNF catalog 142 stores the VNFs which are used to build network services. Each stored VNF may include, but is not limited to, VNF metadata 110 and VNF software bundles. This catalog is accessed by both the orchestrator module 134 and VNFM Managers 136. The resource catalog 144 stores the list of virtual and physical infrastructure resources in the NFVI 106 including the mapping between them. This catalog is accessed by both the orchestrator module 134 and the VIMs 138.

FIG. 2 illustrates a VNF system 200 hosting a VNFC using Active/Standby fault tolerance in accordance with one or more embodiments of the present application. The VNF system 200 is comprised of at least two physical compute nodes 202-1 and 202-2. In one embodiment, the compute nodes 202-1 and 202-2 host hypervisors 204-1 and 204-2, which in turn manage one or more Virtual Machines (VMs) 206-1 and 206-2. In another embodiment, the compute nodes 202-1 and 202-2, host operating systems (OSs) 204-1 and 204-2, which manage containers 206-1 and 206-2. Both embodiments provide virtualization environments in which the VNF Component Instances (VNFCIs) 230-1 and 230-2 execute. As the virtualization environment provided by both embodiments is sufficient for execution, the two embodiments should be considered interchangeable herein. Further, the embodiments used on compute nodes 202-1 and 202-2 may not match. For example, compute node 202-1 may use hypervisor-based virtualization while compute node 202-2 may utilize operating system container based virtualization.

Each compute node 202-1 and 202-2 is comprised of a Central Processing Unit (CPU) module 214-1 and 214-2, a memory module 218-1 and 218-2, a disk module 220-1 and 220-2 and a network interface card (NIC) module 216-1 and 216-2. It should be noted that the capabilities of the hardware resources (CPU, Memory, Disks, NIC, etc.) of compute nodes 202-1 and 202-2 may not be identical. As further shown in FIG. 2, NICs 216-1 and 216-2 communicate network packets via a physical internal network 208, where in accordance with one or more preferred embodiments network 208 may be a private network. The internal network may be connected to an external physical network 212 via, for example, one or more network routers 210.

Each VM/container 206-1 and 206-2 is comprised of a series of virtual resources that map to a subset of the physical resources on the compute nodes 202-1 and 202-2. Each VM/container is assigned one or more virtual CPUs (vCPUs) 222-1 and 222-2, an amount of virtual memory (vMem) 226-1 and 226-2, an amount of virtual storage (vStorage) 228-1 and 228-2 and one or more virtual NICs (vNIC) 224-1 and 224-2. A vCPU 222-1 and 222-2 represents a portion or share of a physical CPU 214-1 and 214-2 that are assigned to a VM or container. A vMem 226-1 and 226-2 represents a portion of volatile memory (e.g. Random Access Memory) 218-1 and 218-2 dedicated to a VM or container. The storage provided by physical disks 220-1 and 220-2 are divided and assigned to VMs/containers as needed in the form of vStorage 228-1 and 228-2. A vNIC 224-1 and 224-2 is a virtual NIC based on a physical NIC 216-1 and 216-2. Each vNIC is assigned a media access control (MAC) address which is used to route packets to an appropriate VM or container. A physical NIC 216-1 and 216-2 can host many vNICs 224-1 and 224-2.

A VNFC instance (VNFCI) 230-1 and 230-2 executes in each VM/containers 206-1 and 206-2. In accordance with one or more embodiments of the present application, a VNFC that utilizes Active/Standby fault tolerance, will have two or more VNFCIs 230-1 and 230-2 running in a VNF system 200. An instance will be in an Active state, performing one or more of servicing requests, sending state notifications, responding to state requests, and sending application state checkpoints to a peer instance in the Standby state. Another instance (peer instance), will be in the Standby state, performing one or more of, sending state notifications, responding to state requests and receiving and processing application state checkpoints. Logically, checkpoint messages 232 travel between VNFCIs 230-1 and 230-2. During execution, these messages 234 actually travel through NICs 216-1 and 216-2 and internal network 208 before being delivered to VNFCIs 230-1 and 230-2.

In this embodiment, a VNFM 240 managing VNFCIs 230-1 and 230-2 provides fault detection and handling for the instances. The VNFM 240 runs on a server 236 which has one or more NICs 238 which provide connectivity to an internal network 208. The VNFM 240 periodically sends status notification requests 242 and 244 to the VNFCIs 230-1 and 230-2 via network 208. The VNFCIs 230-1 and 230-2 respond to the requests with status notifications 242 and 244. In one embodiment, the VNFCIs 230-1 and 230-2 send unsolicited status notifications 242 and 244 periodically. In a preferred embodiment, VNFCIs 230-1 and 230-2 send unsolicited status notifications 242 and 244 anytime the VNFCI operational state changes.

In accordance with one or more embodiments of the present application, FIG. 3 illustrates the NFV system 300, originally depicted in FIG. 2, but with a focus on management elements and communication. The VNF system 300 is comprised of at least two physical compute nodes 302-1 and 302-2. In one embodiment, the compute nodes 302-1 and 302-2 host hypervisors 306-1 and 306-2, which in turn manage one or more Virtual Machines (VMs) 308-1 and 308-2. In another embodiment, the compute nodes 302-1 and 302-2, host operating systems (OSs) 306-1 and 306-2, which manage containers 308-1 and 308-2. Both embodiments provide virtualization environments in which the VNF Component Instances (VNFCIs) 310-1 and 310-2 execute.

As further shown in FIG. 3, NICs 304-1 and 304-2 communicate network packets via a physical internal network 330, where in accordance with one or more preferred embodiments, network 330 may be a private network. The internal network may be connected to an external physical network 334 via one or more network routers 332.

In one embodiment, a server 324 hosts an EMS 328 which is responsible for one or more of fault, configuration, accounting, performance and security (FCAPS) of one or more VNFCIs 310-1 and 310-2. The server 324 has one or more NICs 326 which provide connectivity to an internal network 330 over which FCAPS related messages 336 travel. There may be many EMSs in a system 300. An EMS 328 sends and receives FCAPS messages 336 from all VNFCIs 310-1 and 310-2 that it is managing. In one embodiment, the messaging 336 includes operational state notifications from the VNFCIs 310-1 and 310-2 that it is managing. In another embodiment, the state notification messages 336 do not come directly from the VNFCIs 310-1 and 310-2, but instead come from the VNFM 316. In one embodiment, that messaging 336 includes fault notifications from the VNFCIs 310-1 and 310-2 that it is managing. In another embodiment, the fault notification messages 336 do not come directly from the VNFCIs 310-1 and 310-2, but instead come from the VNFM 316 via notification messages 338.

In accordance with one or more embodiments of the present application, a server 312 hosts a VNFM 316 which is responsible for managing the lifecycle of one or more VNFCIs 310-1 and 310-2. The server 312 has one or more NICs 314 which provide connectivity to an internal network 330 over which lifecycle management and monitoring related messages 340 travel. A VNFM 316 sends and receives lifecycle management and monitoring messages 340 to/from all VNFCIs 310-1 and 310-2 that it is managing. In one embodiment, that messaging 340 includes operational state notifications from the VNFCIs 310-1 and 310-2 that it is managing. Further, the VNFM 316 may relay those notifications messages 340 to an EMS 328 associated with the VNFCIs 310-1 and 310-2 using notification messages 338. In another embodiment, a VNFCI 310-1 or 310-2 requests the status of another VNFCI 310-1 or 310-2 from a VNFM 316 via a message 340 so that it can make a decision on which operational state to take. In an alternative embodiment, a VNFCI 310-1 or 310-2 requests a decision on which operational state to take from a VNFM 316, via a message 340. In another embodiment, a VNFCI 310-1 and 310-2 notifies a VNFM 316 via a message 340 that it has detected that another VNFCI 310-1 and 310-2 has a fault.

As further shown in FIG. 3, an EMS 328 may issue lifecycle management requests concerning VNFCIs 310-1 and 310-2 to a VNFM 316 via messaging 338. Examples of these requests include one or more of deploy, start, stop, undeploy and migrate. A VNFM 316 may work with a VIM 322 and one or more VNFCIs 310-1 and 310-2, once running, to accomplish these requests. The status of these requests may be conveyed in direct response and state change notification messages 338 to the EMS 328. In another embodiment, these lifecycle requests may come from an orchestrator module 134 (as shown in FIG. 1).

In one embodiment, a server 318 hosts a VIM 322 which is responsible for managing the virtualized infrastructure of the NFV System 300. The server 318 has one or more NICs 320 which provide connectivity to an internal network 330 over which VIM monitoring and management related messages 326 travel. There may be many VIMs 322 in a system 300. In one embodiment, a VIM 322 receives infrastructure management request messages 342 from a VNFM 316. In order to fulfill a request, a VIM 322 may need to manage a compute node 302-1 and 302-2, hypervisor/OS 306-1 and 306-2, VM 308-1 and 308-2, network 330 switch, router 332 or any other physical or logical element that is part of the NFV System 300 infrastructure. A VIM sends messages 344 and 346 to manage and monitor a hypervisor/operating system 306-1 and 306-2 and a VM 308-1 and 308-2 associated with a VNFCI 310-1 and 310-2. Examples of these messages include, but are not limited to, requests to create a VM, destroy a VM, move a VM, monitor a running VM, monitor a hypervisor and monitor an OS. In another embodiment, these messages come from an orchestrator module 134 (as shown in FIG. 1). In one embodiment, a VIM 322 will query the states of requisite logical and physical elements when an infrastructure management request is received from a VNFM 316. This embodiment may not be efficient however given the elapsed time between state requests and responses. In another embodiment, a VIM 322 will keep a current view of the states of all physical and logical elements that it manages in order to enable efficient processing when element states are involved. Further, it is expected that a VNFM 316 will maintain a cache of those element states that are associated with VNFCIs 310-1 and 310-2 that it is managing, in order to enable efficient processing when element states are involved.

In accordance with one or more embodiments of the present application, FIG. 4 illustrates the NFV system 400, originally depicted in FIG. 2, but with a focus on signaling communication. The VNF system 400 is comprised of at least two physical compute nodes 402-1 and 402-2. In one embodiment, the compute nodes 402-1 and 402-2 host hypervisors 406-1 and 406-2, which in turn manage one or more Virtual Machines (VMs) 408-1 and 408-2. In another embodiment, the compute nodes 402-1 and 402-2, host operating systems (OSs) 406-1 and 406-2, which manage containers 408-1 and 408-2. Both embodiments provide virtualization environments in which the VNF Component Instances (VNFCIs) 410-1 and 410-2 execute. As further shown in FIG. 4, NICs 404-1 and 404-2 communicate network packets via a physical internal network 412, where in accordance with one or more preferred embodiments, network 418 may be a private network. The internal network may be connected to an external physical network 414 via one or more network routers 424. In accordance with one or more preferred embodiments network 424 may be a public network.

As depicted in FIG. 3, a VNFCI 410-1 and 410-2 may be associated with one or more floating IP addresses 418 and 420 that are part of an internal network 412 or an external network 414. This is required in most cases when a VNFC employs Active/Standby fault tolerance as the IP addresses 418 and 420 VNFC clients 422 and 424 use for exchanging messages must route to the Active VNFCI 410-1. In one embodiment, a VNFC is associated with a floating IP address 418 on an internal network 412, which internal VNFC clients use when exchanging messages 426 with it. Further, the VNFC client 422 may be another VNFC. In another embodiment, a VNFC is associated with a floating IP address 420 on an external network 414, which external VNFC clients 424 use when exchanging messages 428 with it.

As depicted in FIG. 1, a VNF 114 may be comprised of many VNFCs 116. Additionally, a VNF 114 may be associated with one or more signaling IP addresses. In such a case, one of the VNFCs must be designated as the manager of the addresses. Therefore, in one embodiment, a VNFC has one or more VNFCIs 410-1 and 410-2 which are associated with one or more signaling IP addresses 418 and 420 associated with and provisioned against a VNF 114, but managed by a particular VNFCI 410-1 and 410-2.

In accordance with one or more embodiments of the present application, a VNFCI 410-1 sends a resource allocation request to a VIM 322 (see FIG. 3) which in turns sends one or more configuration requests to network routers 416 in order to associate a floating IP address 418 and 420 with the VNFCI, specifically the VM/container 408-1 in which it runs. In one embodiment, a VNFCI 410-1 sends a resource allocation request to a VNFM (FIG. 3, 316) which in turns makes the request of a VIM 322 to associate a floating IP address 418 and 420 with the VNFCI. In another embodiment, a VNFCI 410-1 sends one or more Gratuitous Address Resolution Protocol (GARP) requests 430 to a VM/container 408-1 which forwards the request through a vNIC 224-1 (see FIG. 2) to the physical NIC 404-1 and out to the network routers 416 in order to associate a floating IP address 418 and 420 with the VNFCI.

FIG. 5 illustrates one example of a computing node 500 to support one or more of the example embodiments. This is not intended to suggest any limitation as to the scope of use or functionality of the embodiments described herein. Regardless, the computing node 500 is capable of being implemented and/or performing any of the functionalities or embodiments set forth herein.

In computing node 500 there is a computer system/server 502, which is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with computer system/server 502 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like.

Computer system/server 502 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. Computer system/server 502 may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.

As shown in FIG. 5, computer system/server 502 in cloud computing node 500 is shown in the form of a general-purpose computing device. The components of computer system/server 502 may include, but are not limited to, one or more processors or processing units 504, a system memory 506, and a bus 508 that couples various system components including system memory 506 to processor 504.

Bus 508 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.

Computer system/server 502 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 502, and it includes both volatile and nonvolatile media, removable and non-removable media.

The system memory 506 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 510 and/or cache memory 512. Computer system/server 502 may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system 514 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CDROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus 508 by one or more data media interfaces. As will be further depicted and described below, memory 506 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of various embodiments as described herein.

Program/utility 516, having a set (at least one) of program modules 518, may be stored in memory 506 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules 518 generally carry out the functions and/or methodologies of various embodiments as described herein.

Aspects of the various embodiments described herein may be embodied as a system, method, component or computer program product. Accordingly, aspects of the embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the embodiments may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

Computer system/server 502 may also communicate with one or more external devices 520 such as a keyboard, a pointing device, a display 522, etc.; one or more devices that enable a user to interact with computer system/server 502; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 502 to communicate with one or more other computing devices. Such communication can occur via I/O interfaces 524. Still yet, computer system/server 502 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 526. As depicted, network adapter 526 communicates with the other components of computer system/server 502 via bus 508. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 502. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.

In general, the routines executed to implement the embodiments, whether implemented as part of an operating system or a specific application; component, program, object, module or sequence of instructions will be referred to herein as “computer program code”, or simply “program code”. The computer program code typically comprises one or more instructions that are resident at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processors in a computer, causes that computer to perform the steps necessary to execute steps or elements embodying the various aspects of the embodiments. Moreover, while the embodiments have and herein will be described in the context of fully functioning computers and computer systems, the various embodiments are capable of being distributed as a program product in a variety of forms, and that the embodiments apply equally regardless of the particular type of computer readable media used to actually carry out the distribution. Examples of computer readable media include but are not limited to physical, recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., CD-ROM's, DVD's, etc.), among others, and transmission type media such as digital and analog communication links.

In addition, various program code described herein may be identified based upon the application or software component within which it is implemented in specific embodiments. However, it should be appreciated that any particular program nomenclature used herein is merely for convenience, and thus the embodiments should not be limited to use solely in any specific application identified and/or implied by such nomenclature. Furthermore, given the typically endless number of manners in which computer programs may be organized into routines, procedures, methods, modules, objects, and the like, as well as the various manners in which program functionality may be allocated among various software layers that are resident within a typical computer (e.g., operating systems, libraries, APIs, applications, applets, etc.), it should be appreciated that the embodiments are not limited to the specific organization and allocation of program functionality described herein.

The exemplary environment illustrated in FIG. 5 is not intended to limit the present embodiments. Indeed, other alternative hardware and/or software environments may be used without departing from the scope of the embodiments described herein.

In accordance with one or more embodiments of the present application, FIG. 6 illustrates an administrative state machine diagram of a VNFCI. In one embodiment, the VNFCI administrative state machine 600 is a software component of a VNFM that controls the administrative state of a VNFCI. In another embodiment, the VNFCI administrative state machine 600 is a software component of an EMS that controls the administrative state of a VNFCI. As the VNFCI administrative state machine is the same in both cases, the two embodiments should be considered interchangeable herein. The administrative state reflects the desired state of a VNFCI from an administrator or other individual/entity/process perspective. The state machine includes states that are required to support configuration, deployment and/or start operations. The administrative state is a different plane of state from the VNFCI operational state (the actual execution state of a running instance) which will be discussed in FIG. 7.

A VNFCI administrative state machine 600, starts in the Configured 602 state when a VNFCI is configured in an NFV system 100 (See FIG. 1). At this point, the only representation of the instance is in the elements where the instance configuration is stored. In one embodiment, the VNFCI configuration is stored in a VNF Catalog 142 (See FIG. 1). In another embodiment, the VNFCI configuration is stored in an EMS 112 (See FIG. 1). In yet another embodiment, the VNFCI configuration is stored with another element within NFV MANO 108. Once configured, a VNFCI may be deployed. Any software, configuration data, etc. that is required to execute the VNFCI is electronically transferred by a VNFM 316 (See FIG. 3) to a hosting VM/OS container 308-1 or 308-2 (See FIG. 3) on an NFVI compute node 302-1 or 302-2 (See FIG. 3). This type of operation may be needed in support of management activities including, but not limited to, initial commissioning, software upgrades and host migration. Once the deployment process has successfully been completed, the VNFCI administrative state machine 600 on the managing VNFM 316 (See FIG. 3) is transitioned into an Offline 604 state. In this state, a VNFCI is ready to be started, but is not currently running. Upon receiving a VNFCI start request from an EMS 328 (See FIG. 3) or an Orchestrator 134 (See FIG. 1), the VNFM 316 (See FIG. 3), transitions the VNFCI administrative state machine to the Online 606 state and sends a start request to the VM/container 302-1 or 302-2 (See FIG. 3) that is hosting the target VNFCI 310-1 or 310-2 (See FIG. 3). Upon receiving the start request from the VNFM 316 (See FIG. 3), the hosting VM/container 302-1 or 302-2 (See FIG. 3) actually starts the VNFCI 310-1 or 310-2 (See FIG. 3). It is important to understand that an administrative state of Online 606 does not imply that a VNFCI is actually executing. A VNFCI could fail during startup process or at a later point in time. In either case, the administrative state remains the same—Online 606. Once in the Online 606 administrative state, another VNFCI plane of state, the operational state, becomes relevant. Operational states are described in FIG. 7.

When a VNFM 316 (See FIG. 3) that is managing a VNFCI that is the Online 606 state receives a stop request for that VNFCI, the VNFCI administrative state machine 600 is transitioned into the Offline state 604. Additionally, a stop request is sent from the VNFM 316 (See FIG. 3) to the VNFCI 310-1 or 310-2 (See FIG. 3). In one embodiment, the stop request is sent from the managing VNFM 316 (See FIG. 3) directly to a VNFCI 310-1 or 310-2 (See FIG. 3). In another embodiment, a stop request is sent from a VNFM 316 (See FIG. 3) to the hosting VM/OS container 302-1 or 302-2 (See FIG. 3), which stops the VNFCI 310-1 or 310-2 (See FIG. 3).

When a VNFM 316 (See FIG. 3) that is managing a VNFCI 310-1 or 310-2 (See FIG. 3) that is in the Offline 604 state receives an undeploy request for that VNFCI, all software, data, etc. previously transferred to the VM/OS container 302-1 or 302-2 (See FIG. 3) during deployment is removed from the VM/container 302-1 or 302-2 (See FIG. 3) by one or more commands/scripts/other software components initiated by the VNFM 316 (See FIG. 3), but executed within the VM/container 302-1 or 302-2 (See FIG. 3). This type of operation may be needed in support of management activities including, but not limited to, software upgrades and host migration. Once this operation is complete, the VNFM transitions the VNFCI administrative state machine 600 into the Configured state 602.

In accordance with one or more embodiments of the present application, FIG. 7 illustrates an operational state machine diagram of a VNFCI that employs Active/Standby fault tolerance. The VNFCI operational state machine is a base software component of a VNFC that controls the operational state of the software instance. The VNFCI operational state machine 700, starts out in the Shutdown state 702. In this initial state, the VNFCI executable has not been started. When the VM/container that hosts the VNFCI receives a start VNFCI request from a VM/container, the VNFCI executable, which is stored on a VM/container filesystem, is launched and the operational state machine transitions into the Initializing state 704. In this state, a VNFCI performs any one-time initialization of resources that it may need such as, but not limited to, software subsystems, objects and memory. In one embodiment, one of the software subsystems is an EMS state notification subsystem. This subsystem communicates all operational state changes that occur in state machine 700 to an associated EMS. In another embodiment, one of the software subsystems is a VNFM state notification subsystem. This subsystem communicates all operational state changes that occur in state machine 700 to an associated VNFM. One software subsystem that is present is a peer state subsystem which enables the VNFCI to determine the state of its peer VNFCI if at all possible. In one embodiment, this may be a heartbeat subsystem that exchanges messages with a peer VNFCI. In another embodiment, this may be a subsystem that consults with a VNFM to determine the state of a peer VNFCI. In yet another embodiment, this may be a subsystem that consults with an EMS to determine the state of a peer VNFCI.

Once initialization is complete, the operational state machine transitions into the Determining-State state 706. In this phase, the VNFCI needs to determine whether it should transition into an Active state 710 to provide service or transition into a Standby state 716 in order to act as a backup. At this point, the peer state subsystem is consulted in order to determine the peer VNFCI operational state. This operation may take some time as messages such as heartbeats may need to be exchanged. If the peer operational state can be determined and is not Activating 708 or Active 710, then this VNFCI transitions into the Activating state 708. If the peer operational state cannot be determined, then the VNFCI also transitions into the Activating state 708.

In the Activating state 708, the VNFCI instructs all software subsystems to perform any actions necessary in order to activate. This may include, but are not limited to operations such as creating a queue, opening a communications port and starting a thread of execution. Additionally, it is during this phase that any “floating” IP addresses 418 and 420 (see FIG. 4)) are associated with this VNFCI. In accordance with one or more embodiments of the present application, and as discussed in FIG. 4, this may be accomplished by making a resource allocation request to a VIM and/or issuing a series of GARP requests.

Once activation is complete, the operational state machine transitions into the Active state 710. In this state, the VNFCI is capable of performing its intended function. All service requests from VNFC clients 422 (see FIG. 4,) and/or VNF clients 424 (see FIG. 4) are routed to it via networks 412 and 414 (see FIG. 4). In one embodiment, the VNFC is “stateful”, so while in the Active state 710, the VNFCI sends service state checkpoints as needed to a peer VNFCI instance 410-2 (see FIG. 4) in the Synchronizing state 714 or Standby state 716. If the peer VNFCI is in the synchronizing state, new state checkpoints may be queued and later sent once synchronization is complete and the VNFCI has transitioned into the Standby state 716.

Under normal operating conditions, the VNFCI will remain in the Active state 710 until a maintenance event occurs. Examples of maintenance events include, but are not limited to, a software upgrade and a service migration (for example, onto different NFVI resources). In such a scenario, the EMS or VNFM may instruct the VM/container to stop the VNFCI, which will result in a transition to the Deactivating state 712. There are also exceptional conditions under which a stop event may be issued. In one scenario, two peer VNFCIs have transitioned into the Active state 710. A common cause for this is network isolation of one of the VNFCIs. Once connectivity is restored, one of the instances has to be stopped, so that it can assume the role of backup, ultimately transitioning into a Standby state 716.

If instructed to stop for any reason, the VNFCI transitions into the Deactivating 712 state. In the Deactivating state 712 the VNFCI instructs all software subsystems to perform any actions necessary in order to deactivate. These actions are typically the opposite of those issued in the Activating state 708. These may include, but are not limited to operations such as destroying a queue, closing a communications port and stopping a thread of execution. Once deactivation is complete, the VNFCI transitions into the Shutdown state 702 by halting execution.

While in the Determining State 706 state, if the peer operational state can be determined and is Activating 708 or Active 710, then this VNFCI transitions into the Synchronizing state 714 which indicates to its peer VNFCI that it intends to fulfill the role of a backup. In one embodiment, the VNFC is “stateful” and therefore the VNFCI requests current service state data from its peer VNFCI in the Activating 708 or Active 710 state. While the state data is being received during the synchronization process, checkpoints with new state data may be queued on the VNFCI in the Active 710 state and later sent, in order to preserve the order of operations. Once the synchronization process is complete, the VNFCI transitions into the Standby state 716. While in the Standby state 716, the VNFCI receives and processes new service state checkpoints, so that it is ready to transition into the Activating 708 state if the need arises.

While in the Standby state 716, two types of events will drive the VNFCI operational state machine 700 into the Activating state 708. The first is a peer failure detection event coming from a peer state software subsystem. In one embodiment, this may be a heartbeat failure notification coming from a heartbeat subsystem. In another embodiment, this may be a peer VNFCI failure notification coming from a VNFM management subsystem. In yet another embodiment, this may be a peer VNFCI failure notification coming from an EMS management subsystem.

The second type of event that will drive the VNFCI state machine 700 into the Activating state 708 is a peer stop notification. These are typically driven by a maintenance event on the peer VNFCI while in the Active state 710. An example of such a maintenance event, is a software upgrade, which will result in a stop request being issued to a VNFCI so that a new software load can be executed. In one embodiment, a peer stop notification may be a VNFCI stop notification coming from a heartbeat subsystem. In another embodiment, this may be a VNFCI stop notification coming from a VNFM management subsystem. In yet another embodiment, this may be a VNFCI stop notification coming from an EMS management subsystem. The benefit of the stop notification is the ability to coordinate the switch of activity between the VNFCI in the Active state 710 and the one in the Standby state 716. Without it, failure would have to be detected first, which results in additional service request processing failures.

Barring a failure of or stoppage of a peer VNFCI, a VNFCI in the Standby state 710 will remain in the Standby state 710 until it receives a Stop request typically as a result of a larger maintenance operation such as, but not limited to an upgrade. If a stop request is received, the VNFCI will transition into the Shutdown state 702 by halting execution.

In accordance with one or more embodiments of the present application, FIG. 8 illustrates a structure diagram of a status request message 800 that may be used to enable Active/Standby fault tolerance in a VNFCI. In a preferred embodiment, an EMS periodically requests the status of the VNFCIs that it manages. In one embodiment, a status request message 800 may contain a message timestamp attribute 802 which records the time at which the EMS sent the message 800. A status request message 800 contains a request ID attribute 804 which can be used by the EMS to associate a status notification message 900 (See FIG. 9) with a particular request message 800. Additionally, the status request message 800 contains a VNFCI last reported operational state attribute 806 which will contain the request sender's view of the VNFCIs last known operational state. This information may be useful when detecting exceptional conditions such as, but not limited to, a one way communication path between a VNFCI and its EMS. In a preferred embodiment, the VNFCI operational state will be one of the states depicted in FIG. 7 700. If an initial view of the operational state has not been determined, the value will reflect that it is unknown. The status request message 800 may contain a last report timestamp attribute 808 which records the message timestamp of the last status notification 900 (See FIG. 9) received by the EMS from the target VNFCI. Regardless of embodiment, it should be understood that status request message 800 attributes 802-808 can be combined, sent and/or received and parsed in any order.

In accordance with one or more embodiments of the present application, FIG. 9 illustrates a structure diagram of a status notification message 900 that may be used to enable Active/Standby fault tolerance in a VNFCI. In a preferred embodiment, VNFCIs that employ Active/Standby fault tolerance include a notification software subsystem which send status notifications to the managing EMS and respond to status requests that are received. In one embodiment, a status notification message 900 may contain a message timestamp attribute 902 which records the time at which the VNFCI sent the message 900. A status notification message 900 contains a message type 904 which indicates whether this message is an unsolicited notification or a response to a notification request 800 (See FIG. 8) being received. If the message is a response, it may also contain a request ID attribute 906 that contains the ID of the notification request 800 (See FIG. 8) that prompted it to be sent. The status notification message 900 may contain a timestamp attribute 908 which records the time of the last VNFCI operational state change. Additionally, the status notification message 900 contains a VNFCI current operational state attribute 910, which contains the current operational state of the VNFCI. In a preferred embodiment, the VNFCI current operational state will be one of the states depicted in FIG. 7. A status notification message 900 may also contain a VNFCI desired operational state attribute 912, which contains the desired final operational state of the sending VNFCI. In a preferred embodiment, this would be either the Shutdown 702, Active 710 or Standby 716 states described in FIG. 7. The information may be used to remind the EMS of its last state directive to the VNFCI.

In accordance with one or more embodiments of the present application, FIG. 10 illustrates an EMS controlled fault detection process 1000 for VNFCs that employs Active/Standby fault tolerance. In one embodiment, this process is included in an Element (VNFC) monitoring software subsystem that is part of an EMS 328 (See FIG. 3) software load. A general overview describing the approach is helpful before describing the process in detail. Each EMS sends status notification requests to the element instances, more specifically VNFCIs 230-1 or 230-2 (See FIG. 2), that it manages which are in the Online 606 (See FIG. 6) administrative state at certain intervals. Upon receipt of a status notification request, a VNFCI sends a status notification in response. In one embodiment, the status notification requests are of the form shown in FIG. 8. In one embodiment, the status notifications are of the form shown in FIG. 9. The status notification request interval may change based on the status mode the monitoring subsystem is in for a particular VNFCI. For example, if status notifications are being received in a timely manner from a VNFCI, then the monitoring subsystem is operating in Normal status mode for that VNFCI. However, if a status notification (either unsolicited or in response to a request) is not received from the VNFCI in a period of time controlled by an initial fault timer, then the status mode is transitioned into Initial Fault mode. In this mode, a failure is suspected, thus the time between status notification requests is expected to decrease in order to provide as many chances as possible for a message to get through before a failure is declared. If a status notification is received, the monitoring subsystem transitions back into Normal status mode for the VNFCI. Otherwise, if a status notification is not received within a period of time controlled by a final fault timer, then a failure is determined. At this point, the status mode is transitioned into Failure mode, which is expected to increase the time between status notification requests in order to minimize unnecessary network traffic. The rationale for this is that it is expected that, if a VNFCI has failed, it will immediately send a status notification upon being restored. Additionally, when a failure is determined, a status failure notification is raised which will enable the EMS to take appropriate action. While it is envisioned that the notification request intervals for the various modes and timer values will be provisioned by an operator or other individual/entity/process, these values may also be statically defined in the software, or dynamically provisioned based on other provisioning values or operating conditions such as, but not limited to, network latency.

The Element (VNFC) monitoring subsystem 1002 of the EMS 328 (See FIG. 3) monitors VNFCIs that are in the Online 606 (See FIG. 6) administrative state. The fault detection process described in 1000 is applied to each Online VNFCI 1004 independently. When a VNFCI is transitioned into the Online 606 administrative state, the status mode is initially set to Normal mode 1006. Once the mode is set, a status timer is started 1008 based on the current status mode setting, which is normal in this case. Additionally, an initial fault timer is started 1010 in order to detect initial loss of status communication with the VNFCI 230-1 or 230-2 (See FIG. 2).

When the status timer expires 1012, a status notification request is sent. In one embodiment, that status notification request message is of the form shown in FIG. 8. In order to construct the messages, the EMSs view of the VNFCI operational state and the time of notification is retrieved 1014 from an Element (VNFCI) State database 1016. In a preferred embodiment, database 1016 is located in process memory for efficient execution. Once the VNFCI state and timestamp have been retrieved, the status notification request can be built using that data along with a generated request ID and sent 1018. Once the status notification request has been sent, the status timer is restarted based on its current setting 1020.

If no status notification messages are received in the initial fault time period, the Initial Fault timer will expire 1022. When it does, the status mode is transitioned to Initial Fault 1024 by the monitoring subsystem and the status timer is restarted with the Initial Fault mode setting 1026. In this mode, a failure is suspected, so the time between status notification requests is decreased in order to provide as many chances as possible for a request message to get through before a failure is declared. Additionally, the Final Fault timer is started with its provisioned value 1028.

Once in Initial Fault mode, if no status notification messages are received by the monitoring subsystem in the final fault time period, the Final Fault timer will expire 1030. At this point, the VNFCI is presumed failed, at least from a monitoring subsystem perspective. Given this, the status mode is transitioned to Failure 1032 and the status timer is restarted with the failure mode setting 1034. In this mode, the time between heartbeat notifications is increased in order to minimize unnecessary network traffic since the VNFCI 230-1 or 230-2 (See FIG. 2) is presumed failed. At this point, a state change notification indicating an unknown state is sent 1036 to the VNFM 316 (See FIG. 3) associated with the VNFCI 310-1 or 310-2 (See FIG. 3). Additionally, a status notification failure is raised 1038. In a preferred embodiment, the failure notification is raised within the EMS 328 (see FIG. 3), possibly to an Element (VNFC) fault handling software subsystem, so it can take appropriate action in response to the failure. Appropriate actions may include, but are not limited to, directing the peer VNFCI 230-1 or 230-2 (See FIG. 2) to transition into the Active state 710 (See FIG. 7) and raising an alarm.

Upon receipt of an unsolicited or solicited status notification message from a VNFCI 1040, the last reported state for the VNFCI is retrieved 1042 from the VNFCI state database 1016. Additionally, the status notification message is added 1044 to the VNFCI state database 1016. The VNFCI operational state 910 (See FIG. 9) contained in the status notification message 900 (See FIG. 9) is then compared 1046 to the last reported state retrieved previously. If the states are different, then the new operational state 910 (See FIG. 9) and the state change timestamp 908 (See FIG. 9) contained in the status notification message are persisted 1048 in the VNFCI state database 1016. Additionally, a state change notification indicating the new VNFCI operational state is sent 1050 to the VNFM 316 (See FIG. 3) associated with the VNFCI 310-1 or 310-2 (See FIG. 3). Whether the operational state changed or not, the status mode is then examined 1052. If the mode is set to normal, then the Initial Fault timer is restarted 1054 to stop it from expiring. This is the normal operating case. If the mode is set to Initial Fault, then the final failure timer is stopped 1056 so it doesn't expire and indicate a failure. This indicates that there was a short disruption, but communication resumed before a failure was declared. If the mode is set to Failure then a failure was previously declared, so a status resumption notification is raised 1058. In one embodiment, a resumption notification is raised within the EMS, possibly to an Element (VNFC) fault handling software subsystem, so it can take appropriate action in response to the resumption of VNFCI status communication. In this case, appropriate actions may include, but are not limited to, sending a state change directive to one or more VNFCIs and clearing an alarm. In another embodiment, a resumption notification is sent to a VNFM so that it is aware of the current VNFCI operational state as well. The flow continues if the status mode is in the Initial Fault or Failure state. In either case, the Initial Fault timer must be started again because it is no longer running 1060. The status mode must also be set back to Normal 1062 as status communication has resumed. Finally, the status timer is restarted with the normal mode settings 1064 so that status notification requests are sent at the appropriate interval.

In accordance with one or more embodiments of the present application, FIG. 11 illustrates an EMS controlled fault handling process 1100 for a VNFC 230-1 or 230-2 (See FIG. 2) that employs Active/Standby fault tolerance. In one embodiment, this process is included in a VNF fault handling software subsystem within the EMS 328 (see FIG. 3).

The process beings when a VNFCI status failure notification is received 1102, which indicates that the EMS 328 (see FIG. 3) has lost status communication with a VNFCI 230-1 or 230-2 (See FIG. 2). In one embodiment, the status failure notification is generated by a VNFC monitoring subsystem as depicted in FIG. 10. Although FIG. 10 depicts a particular VNFC fault detection process, it should be understood that in other embodiments, that process may differ. For example, in another embodiment failure detection may controlled by a count of missed status notification responses instead of a failure timer expiration 1030 (See FIG. 10). As the VNFCI 230-1 or 230-2 (See FIG. 2) is not responding to status notification requests, the conclusion can be drawn that it is either down or network isolated because the EMS 328 (see FIG. 3) cannot communicate with it. Given this, it is desirable for the peer VNFCI 230-1 or 230-2 (See FIG. 2) to be transitioned into the Active 710 (See FIG. 7) operational state, if at all possible, so it can provide service.

Receipt of the status failure notification prompts the fault handling subsystem to retrieve 1104 the administrative and operational states of the peer of the VNFCI 230-1 or 230-2 (See FIG. 2), identified in the status failure notification, from the Element (VNFC) state database 1106. In a preferred embodiment, database 1106 is located in process memory for efficient execution. The peer VNFCI administrative state is then examined 1108. In a preferred embodiment, the administrative state is one of the states depicted in FIG. 6. If the peer VNFCI 230-1 or 230-2 (See FIG. 2) administrative state is not Online 606 (See FIG. 6), then no action 1110 is taken by the EMS 328 (see FIG. 3) because the peer VNFCI 230-1 or 230-2 (See FIG. 2) is not available to take over for the VNFCI 230-1 or 230-2 (See FIG. 2) with which the EMS 328 (see FIG. 3) has lost contact.

If the peer VNFCI 230-1 or 230-2 (See FIG. 2) administrative state is Online 606 (See FIG. 6), then the subsystem checks to see if the peer VNFCI 230-1 or 230-2 (See FIG. 2) is currently responding to status requests 1112. If the peer VNFCI is not responding to status requests, then the EMS 328 (see FIG. 3) cannot communicate with either the VNFCI 230-1 or 230-2 (See FIG. 2) or the peer VNFCI 230-1 or 230-2 (See FIG. 2). This indicates that there is either a general communication problem between the EMS 328 (see FIG. 3) and the VNFCIs 230-1 and 230-2 (See FIG. 2) or that both VNFCIs 230-1 and 230-2 (See FIG. 2) have failed. In either case, the EMS 328 (see FIG. 3) can take no action 1110 to correct a service disruption if one even exists.

If the peer VNFCI 230-1 or 230-2 (See FIG. 2) is responding to status requests, the last reported operational state of the peer VNFCI 230-1 or 230-2 (See FIG. 2) is examined 1114. If the operational state of the peer VNFCI is already Active 710 (See FIG. 7), then the VNFM 240 (see FIG. 2) takes no action 1110 as service is already being provided by the peer VNFCI 230-1 or 230-2 (See FIG. 2).

If the operational state of the peer VNFCI 230-1 or 230-2 (See FIG. 2) is not Active 710 (See FIG. 7), then the peer VNFCI should be transitioned into the Active 710 (See FIG. 7) state, unless there is a critical issue on the virtual or physical resources in the NFVI 106 (See FIG. 1) supporting the VNFC 116 (See FIG. 1) that would prevent it from working properly. In order to check for this condition, current issues on resources associated with the peer VNFCI 230-1 or 230-2 (See FIG. 2) are requested 1116 from the VNFM 240 (See FIG. 2) associated with the peer VNFCI 230-1 or 230-2 (See FIG. 2). In a preferred embodiment, the resource states are stored in a VIM Resource State Cache located in process memory of the VNFM 240 (See FIG. 2) for efficient execution. In another embodiment, one or more VIMs 322 (See FIG. 3) may be queried 342 (See FIG. 3) by the VNFM 316 (See FIG. 3) for current resource states. The resource states are examined for critical issues 1120. If one or more critical issues are found, then the peer VNFCI 230-1 or 230-2 (See FIG. 2) is not eligible to take activity, so the EMS 328 (see FIG. 3) takes no action 1110. If no critical issues are found, then a state change request is built, with an attribute specifying a next state of Active, and sent 1122 to the peer VNFCI 230-1 or 230-2 (See FIG. 2). Once the request is sent a state change request retry timer is started 1124. After processing the request, it is expected that the peer VNFCI 230-1 or 230-2 (See FIG. 2) will respond to the state change request with a state change acknowledgement. Upon receipt of a state change acknowledgement 1126 from the peer VNFCI 230-1 or 230-2 (See FIG. 2), the EMS 328 (see FIG. 3) stops the request retry timer 1128. If the peer VNFCI 230-1 or 230-2 (See FIG. 2) does not acknowledge the state change request in a timely manner, the request retry timer will expire 1130, resulting in the request being sent again 1122 and the remainder of the process being repeated.

If a response is not received from the VNFM 240 (See FIG. 2) in a timely manner, then a response timer will expire 1132. In this case, the lack of response is treated like a response indicating no critical issues. Specifically, a state change request is built, with an attribute specifying a next state of Active, and sent 1122 to the peer VNFCI 230-1 or 230-2 (See FIG. 2). The remainder of the flow then continues as previously described.

Any network element that employs Active/Standby fault tolerance, and utilizes logic that does not allow for zero Active instances, is subject to a condition known as split-brain in which multiple elements take on the Active 710 (See FIG. 7) operational state. An example of this can be seen if the [Not Active] option is true at step 1114 and the [No] option is true at step 1120 (See FIG. 11). In this case, the EMS 328 (see FIG. 3) is instructing a peer VNFCI to take activity because communication has been lost with a VNFCI 230-1 or 230-2 (See FIG. 2). Given this, and in accordance with one or more embodiments of the present application, FIG. 12 illustrates a VNFM controlled split-brain resolution process 1200 for a VNFC that employs Active/Standby fault tolerance. In one embodiment, this process is included in a VNF fault handling software subsystem within the EMS 328 (see FIG. 3). This process has a major advantage over a VNFC logic only approach because the EMS 328 (See FIG. 3) has a more detailed view of network element status, thanks to its relationship with the VNFM 316 (See FIG. 3) which consults with one or more VIMs 322 (See FIG. 3) which manage the NFVI 106 (See FIG. 1). Given this, the EMS 328 (See FIG. 3) can provide the direction required to minimize service disruption and resolve the condition.

Initially, a peer VNFCI 230-1 or 230-2 (See FIG. 2) is in the Active 710 (see FIG. 7) operational state 1202. While in this state, the fault handling subsystem within the EMS 328 (see FIG. 3) receives a status resumption notification for a VNFCI 230-1 or 230-2 (See FIG. 2) indicating that it is in the Active 710 (see FIG. 7) operational state 1204. At this point, the EMS 328 (see FIG. 3) recognizes that the VNFC with VNFCIs 230-1 and 230-2 (See FIG. 2) is in a split-brain condition. Recognition of the split-brain condition prompts the EMS 328 (see FIG. 3) to retrieve the time 1206 that the VNFCI 230-1 or 230-2 (See FIG. 2) transitioned into the Active 710 (see FIG. 7) state from an Element (VNFC) State database 1208. In a preferred embodiment, database 1208 is located in process memory for efficient execution. Additionally, the EMS retrieves the time 1210 that the peer VNFCI 230-1 or 230-2 (See FIG. 2) transitioned into the Active 710 (see FIG. 7) state from an Element (VNFC) State database 1208.

If one of the VNFCIs was network isolated while Active, and the other was not, then the isolated instance should give up activity because it was not able to provide service for at least a portion of the time it was Active 710 (see FIG. 7). In order to determine if VNFCI 310-1 or 310-2 (See FIG. 3), was network isolated while Active 710 (see FIG. 7), the history of issues on the virtual and physical resources that support it should be examined. Specifically, issues that occurred since the time of activation retrieved in steps 1208-1210, on resources associated with the VNFCI 310-1 or 310-2 (See FIG. 3) and the peer VNFCI 310-1 or 310-2 (See FIG. 3), are retrieved. This is accomplished by building and sending 1212 and 1214 network isolation requests to the managing VNFM 316 (See FIG. 3) for both the VNFCI 310-1 or 310-2 (See FIG. 3) and the peer VNFCI 310-1 or 310-2 (See FIG. 3). In a preferred embodiment these requests are sent simultaneously and request timers are started for each.

It is expected that the VNFM 316 (See FIG. 3) will consult with one or more VIMs 322 (See FIG. 3) to determine if a network isolation condition was present. In a preferred embodiment, the resource issue history is stored in a VIM Resource State Cache located in process memory of the VNFM 316 (See FIG. 3) for efficient execution. In another embodiment, one or more VIMs 322 (See FIG. 3) may be queried 342 (See FIG. 3) for current resource states.

Once responses are received 1216 and 1220 or timeouts have occurred 1218 and 1222 for the respective requests, the processing continues. If a response was not received, and therefore a timeout event occurred, then the network isolation state of the VNFCI specified in the request is recorded as Unknown. When the processing continues, the network isolation status of VNFCI 310-1 or 310-2 (See FIG. 3) and peer VNFCI 310-1 or 310-2 (See FIG. 3) are examined to determine if the VNFCI 310-1 or 310-2 (See FIG. 3) was not network isolated while Active 710 (See FIG. 7), but the peer VNFCI 310-1 or 310-2 (See FIG. 3) was network isolated 1224. If true, then a State Change Request is built, with an attribute specifying a next state of Standby 716 (See FIG. 7), and sent 1226 to the peer VNFCI 310-1 or 310-2 (See FIG. 3). Once the request is sent a state change request retry timer is started 1228. After processing the request, it is expected that the peer VNFCI 310-1 or 310-2 (See FIG. 3) will respond to the state change request with a state change acknowledgement. Upon receipt of a state change acknowledgement 1230 from the peer 310-1 or 310-2 (See FIG. 3), the EMS 328 (see FIG. 3) stops the request retry timer 1232. If the peer VNFCI 310-1 or 310-2 (See FIG. 3) does not acknowledge the state change request in a timely manner, the request retry timer will expire 1234, resulting in the request being sent again 1226 and the remainder of the process being repeated until an acknowledgement is received.

If not true, then the network isolation status of VNFCI 310-1 or 310-2 (See FIG. 3) and peer VNFCI 310-1 or 310-2 (See FIG. 3) are examined to determine if the VNFCI 310-1 or 310-2 (See FIG. 3) was network isolated while Active 710 (See FIG. 7), but the peer VNFCI 310-1 or 310-2 (See FIG. 3) was not network isolated 1236.

If true, then a State Change Request is built, with an attribute specifying a next state of Standby 716 (See FIG. 7), and sent 1238 to the VNFCI 310-1 or 310-2 (See FIG. 3). Once the request is sent a state change request retry timer is started 1240. After processing the request, it is expected that the VNFCI 310-1 or 310-2 (See FIG. 3) will respond to the state change request with a state change acknowledgement. Upon receipt of a state change acknowledgement 1242 from the peer 310-1 or 310-2 (See FIG. 3), the EMS 328 (see FIG. 3) stops the request retry timer 1244. If the VNFCI 310-1 or 310-2 (See FIG. 3) does not acknowledge the state change request in a timely manner, the request retry timer will expire 1246, resulting in the request being sent again 1238 and the remainder of the process being repeated until an acknowledgement is received.

If false, then either both VNFCIs 310-1 and 310-2 (See FIG. 3) had the same network isolation status while Active 710 (See FIG. 7), or the network isolation status of one or both of them is Unknown due to a lack of response from the EMS 328 (See FIG. 3). In these conditions, in order to determine which instance should keep activity, a VNFC 116 (See FIG. 1) provisioned preferred Standby instance designation is examined 1248. Though a provisioned entity in this embodiment, in other embodiments the preferred standby designation may be determined dynamically by, but not limited to, VNFCI 310-1 and 310-2 (See FIG. 3) hosting VM/container 308-1 and 308-2 (See FIG. 3) resource assignments, or network conditions such as latency.

If VNFCI 310-1 and 310-2 (See FIG. 3) is not the preferred Standby instance, a State Change Request is built, with an attribute specifying a next state of Standby 716 (See FIG. 7), and sent 1226 to the peer VNFCI 310-1 or 310-2 (See FIG. 3) until the request is acknowledged as described previously. Otherwise, if the VNFCI 310-1 and 310-2 (See FIG. 3) is the preferred Standby instance, a State Change Request is built, with an attribute specifying a next state of Standby 716 (See FIG. 7), and sent 1238 to the VNFCI 310-1 or 310-2 (See FIG. 3) until the request is acknowledged as described previously. 

What is claimed is:
 1. A system, comprising: a server hosting an element management system (EMS) controlling a split-brain resolution process for one or more virtual network function component instances (VNFCI), wherein the EMS is configured to: receive, from a peer VNFCI, a VNFCI status notification resumption message when the peer VNFCI is active; retrieve a timestamp of a VNFCI state change, of a first VNFCI, to an active state from an element VNFCI state database; retrieve a timestamp of a VNFCI state change, of the peer VNFCI, to an active state from an element VNFCI state database; send a request to a virtual network function manager (VNFM) to identify if the first VNFCI was isolating while the first VNFCI was in an active state; send a request to the VNFM to identify if the peer VNFCI was network isolated while the peer VNFCI was in an active state; send a state change request, with an attribute specifying a next state of Standby, to the peer VNFCI when the first VNFCI is identified as having not been network isolated, and the peer VNFCI was network isolated; send the state change request to the first VNFCI when the first VNFCI is identified as having been network isolated, and the peer VNFCI is identified as having not been network isolated; and send, based on a preferred standby designation, the state change request to either the VNFCI or the peer VNFCI when the first VNFCI and the peer VNFCI are identified as having been network isolated, or when a network isolation status of either the first VNFCI or the peer VNFCI is unknown.
 2. The system of claim 1, wherein the EMS is further configured to: start a retry timer for the peer VNFCI when the state change request is sent to the peer VNFCI.
 3. The system of claim 2, wherein the EMS is further configured to: stop the retry timer for the peer VNFCI when a state change acknowledgement is received from the peer VNFCI.
 4. The system of claim 3, wherein the EMS is further configured to: resend the state change request to the peer VNFCI when the peer VNFCI retry timer expires.
 5. The system of claim 1, wherein the EMS is further configured to: start a retry timer for the first VNFCI when the state change request is sent to the first VNFCI.
 6. The system of claim 5, wherein the EMS is further configured to: stop the retry timer for the first NVFCI when a state change acknowledgement is received from the first VNFCI.
 7. The system of claim 5, wherein the EMS is further configured to: send the state change request to the first VNFCI when the VNFCI retry timer for the first VNFCI expires.
 8. A method implemented by an element management system (EMS) for controlling a split-brain resolution process for one or more virtual network function component instances (VNFCI), the method comprising: receiving a VNFCI status notification resumption message, from a peer VNFCI, when the peer VNFCI is active; retrieving a timestamp of a VNFCI state change, of a first VNFCI, to an active state from an element VNFCI state database; retrieving a timestamp of a VNFCI state change, of the peer VNFCI, to an active state from an element VNFCI state database; sending a request to a virtual network function manager (VNFM) to identify if the first VNFCI was is isolating while the first VNFCI was in an active state; sending a request to the VNFM to identify if the peer VNFCI was network isolated while the peer VNFCI was in an active state; sending a state change request, with an attribute specifying a next state of Standby, to the peer VNFCI when the first VNFCI is identified as having not been network isolated, and the peer VNFCI was network isolated; sending the state change request to the first VNFCI when the first VNFCI is identified as having been network isolated, and the peer VNFCI is identified as having not been network isolated, and sending, based on a preferred standby designation, the state change request to either the VNFCI or the peer VNFCI when the first VNFCI and the peer VNFCI are identified as having been network isolated, or when a network isolation status of either the first VNFCI or the peer VNFCI is unknown.
 9. The method of claim 8, further comprising: starting a retry timer for the peer VNFCI when the state change request is sent to the peer VNFCI.
 10. The method of claim 9, further comprising: stopping the retry timer for the peer VNFCI when a state change acknowledgement is received from the peer VNFCI.
 11. The method of claim 9, further comprising: resending the state change request to the peer VNFCI when the peer VNFCI retry timer expires.
 12. The method of claim 8, further comprising: starting a retry timer for the first VNFCI when the state change request is sent to the first VNFCI.
 13. The method of claim 12, further comprising: stopping the retry timer for the first NVFCI when a state change acknowledgement is received from the first VNFCI.
 14. The method of claim 12, further comprising: sending the state change request to the first VNFCI when the retry timer for the first VNFCI expires.
 15. A non-transitory computer readable medium comprising one or more instructions that when read by a processor, of an element management system (EMS) that controls a split-brain resolution process for one or more virtual network function component instances (VNFCI), cause the processor to perform: receiving a VNFCI status notification resumption message, from a peer VNFCI, when the peer VNFCI is active; retrieving a timestamp of a VNFCI state change, of a first VNFCI, to an active state from an element VNFCI state database; retrieving a timestamp of a VNFCI state change, of the peer VNFCI, to an active state from an element VNFCI state database; sending a request to a virtual network function manager (VNFM) to identify if the first VNFCI was is isolating while the first VNFCI was in an active state; sending a request to the VNFM to identify if the peer VNFCI was network isolated while the peer VNFCI was in an active state; sending a state change request, with an attribute specifying a next state of Standby, to the peer VNFCI when the first VNFCI is identified as having not been network isolated, and the peer VNFCI was network isolated; sending the state change request to the first VNFCI when the first VNFCI is identified as having been network isolated, isolate and the peer VNFCI is identified as having not been network isolated; and sending, based on a preferred standby designation, the state change request to either the VNFCI or the peer VNFCI when the first VNFCI and the peer VNFCI are identified as having been network isolated, or when a network isolation status of either the first VNFCI or the peer VNFCI is unknown.
 16. The non-transitory computer readable medium of claim 15, wherein the one or more instructions further cause the processor to perform: starting a retry timer for the peer VNFCI when the state change request is sent to the peer VNFCI.
 17. The non-transitory computer readable medium of claim 16, wherein the one or more instructions further cause the processor to perform: stopping the retry timer for the peer VNFCI when a state change acknowledgement is received from the peer VNFCI.
 18. The non-transitory computer readable medium of claim 16, wherein the one or more instructions further cause the processor to perform: resending the state change request to the peer VNFCI when the peer VNFCI retry timer expires.
 19. The non-transitory computer readable medium of claim 15, wherein the one or more instructions further cause the processor to perform: starting a retry timer for the first VNFCI when the state change request is sent to the first VNFCI.
 20. The non-transitory computer readable medium of claim 19, wherein the one or more instructions further cause the processor to perform: stopping the retry timer for the first NVFCI when a state change acknowledgement is received from the first VNFCI. 